<?php
/**
 * Ly - 系统路由器类
 *
 * 进行路由管理，判断系统调用的是模块还是插件等，取得模块、插件、行为名称
 *
 * Copyright (c) 2013 YinHailin All rights reserved.
 * @Author: YinHailin
 * @Authorize: Boren Network
 * @Created by YinHailin at 2013-11-01
 */

defined('LY_VERSION') or exit();

class RouterCore {

  /* 路由处理 */
  static public function Router() {
    //定义插件名称
    $plugin = self::_GetPlugin(C('VAR_PLUGIN'));
    if (!is_null($plugin)) {
      define('PLUGIN_NAME', $plugin);
    }
    //定义模块名称
    define('MODULE_NAME', self::_GetModule(C('VAR_MODULE')));
    //定义行为名称
    define('ACTION_NAME', self::_GetAction(C('VAR_ACTION')));
  }

  /*
   * 获得实际模块名称
   * @param string $var 模块名称
   * @return string
   */
  static private function _GetModule($var) {
    $module = empty($_GET[$var]) ? C('DEFAULT_MODULE') : $_GET[$var];
    unset($_GET[$var]);
    if (C('URL_CASE_INSENSITIVE')) {
      //URL地址不区分大小写
      $module = ucfirst(parse_name($module, 1));
    }
    return $module;
  }

  /*
   * 获得实际插件名称
   * @param string $var 插件名称
   * @return string
   */
  static private function _GetPlugin($var) {
    //插件调用优先级低于模块
    if (empty($_GET[C('VAR_MODULE')]) && !empty($_GET[$var])) {
      $plugin = $_GET[$var];
      unset($_GET[$var]);
      if (C('URL_CASE_INSENSITIVE')) {
        //URL地址不区分大小写
        $plugin = ucfirst(parse_name($plugin, 1));
      }
    } else {
      $plugin = null;
    }
    return $plugin;
  }

  /*
   * 获得实际行为名称
   * @param string $var 行为名称
   * @return string
   */
  static private function _GetAction($var) {
    $action = empty($_GET[$var]) ? C('DEFAULT_ACTION') : $_GET[$var];
    unset($_GET[$var]);
    if (C('URL_CASE_INSENSITIVE')) {
      //URL地址不区分大小写
      $action = strtolower($action);
    }
    return $action;
  }
}